Various data processing systems have been developed including storage systems, cellular telephone systems, and radio transmission systems. In such systems data is transferred from a sender to a receiver via some medium. For example, in a storage system, data is sent from a sender (i.e., a write function) to a receiver (i.e., a read function) via a storage medium. As information is stored and transmitted in the form of digital data, errors are introduced that, if not corrected, can corrupt the data and render the information unusable. The effectiveness of any transfer is impacted by any losses in data caused by various factors. When recovering transferred data, loop processing may be performed to detect the values of the transferred data and to perform functions such as gain control and noise filtering. Such loop processing often includes filtering with noise predictive finite impulse response filters, which improves the bit error rate performance of the loop processing path, although it increases the channel length, system complexity and decision latency.